
#pragma once

#include "EulerProblem.h"
// #include "libmesh/mesh_tools.h"
#include "libmesh/bounding_box.h"

using std::vector;
using std::map;
using  libMesh::BoundingBox;

class Riemann2DProblem : public EulerProblem
{
public:
	Riemann2DProblem(const InputParameters &params);

protected:
	virtual void initialCondition(Real *value, Real t, const Point &p);
	virtual void boundaryCondition(Real *value, Real t, const Point &p);

	map<BoundingBox, vector<Real> > _initial;
	MooseEnum _sub_type;
	std::vector<Real> _shock_depart[4];
	virtual int pointLocator( const Point &p){ return 0;};
	virtual void setShockDepart(){};
};

template<>
InputParameters validParams<Riemann2DProblem>();
